#ifndef OKADA_ITERATION_PARAMS_HXX
#define OKADA_ITERATION_PARAMS_HXX

#include "../Okada.hxx"

struct Iteration_Params
{
  double xi, et, q, xi2, et2, q2, r2, r, r3, r5, y, d, tt, alx, ale,
    x11, y11, x32, y32, ey, ez, fy, fz, gy, gz, hy, hz;

  Iteration_Params(const double &Xi, const double &Et,
                   const double &Q, const bool &kxi,
                   const bool &ket,
                   const double &sin_dip,
                   const double &cos_dip);
  Okada::Displacement ua(const FTensor::Tensor1<double,3> &dislocation,
                         const double &alp1, const double &alp2,
                         const double &sin_dip, const double &cos_dip) const;
  Okada::Displacement ub
  (const FTensor::Tensor1<double,3> &dislocation,
   const double &alp3,
   const double &sin_dip,
   const double &cos_dip,
   const double &cos_dip2,
   const double &sin_dip2,
   const double &sin_cos_dip) const;
  Okada::Displacement uc
  (const double &z,
   const FTensor::Tensor1<double,3> &dislocation,
   const double &alp4, const double &alp5,
   const double &sin_dip, const double &cos_dip,
   const double &cos_dip2,
   const double &sin_dip2,
   const double &sin_cos_dip) const;

};

#endif
